[Unity] 簡單易用的免費線上排行榜服務 globalstat.io 與使用方法
[Unity] Free online leadboard service globalstat.io
作為一個即將升上大四的老人,在中央創遊也待了三年,聽過很多社內社外講師的演講,也領略了很多遊戲製作的訣竅以及上架前後需要製作的事項。其中有一點我聽過非常多講師介紹過:在吸引到玩家遊玩後,要如何留住玩家?
從社群互動到持續更新新內容,從營造社群或是創造競爭環境,各方面去切入,方法可說是五花八門。而排行榜與成就的功能是其中一個很常見的例子。
有了排行榜,就會有玩家會想盡辦法站穩榜上的位置,一旦被其他人超越便會有所不甘,繼續在那邊「刷榜」,就算沒有任何獎勵也一樣。這時,遊戲的樂趣便已經從遊戲本身轉移到玩家間的競爭上,遊戲的黏著性也變得更高。
我之前的小作品 ryrysnake 排行榜
遊戲本身是滿好玩的 (但很冗,一場 5 分鐘多的音樂遊戲),沒想到會有人那麼努力在拚榜
有統計的玩家已經有超過 150 位
成就系統也有類似的概念,玩家為了達成成就而去遊玩遊戲,就好像我們在遊玩超級瑪利歐在尋求通關一樣,原本玩家可能已經對遊戲本身失去熱情,但為了達成這些遊戲設計者所預先設下的目標,玩家還是會繼續遊玩。
不只是遊戲,許多服務或系統都早已套用成就的系統來促進用戶的黏著性,像是 Google Play 推出的 Google Play Points、或是超商常見的集點卡等等都算是廣義的成就。
Google Play Points: 課金課越多越划算,吸引玩家在 Google Play 上消費
本篇要介紹的 globalstat.io,是一個簡單且完全開放的成就與排行榜網站,對於 Google Play 或是 Apple Game Center 等整合服務來說,這網站功能雖然很陽春,但對於我這種做網頁小遊戲、卻又不想自己刻個後端的人來說是個剛剛好的選擇。玩家不需要綁定任何帳號,只要填入暱稱就能放到榜上,在上傳成績時也能利用自己設的 ID 區分不同用戶,簡單而實用。
建立遊戲
進入 globalstats.io ,首先需要建立帳號,方法跟一般網站一樣,點選右上角 Sign Up 就可以開始註冊。依序填入帳號名稱、email 和密碼。
跑完註冊流程之後登入,點右上角帳號名稱 > Profile,之後選 My Games 就可以看到自己所註冊的遊戲。我們按 Register new Game 註冊新遊戲。
填入遊戲名稱並送出就完成遊戲的建立了,之後可以點選上面的 Edit Details 更改遊戲名稱或其他資訊、以及要不要在 globalstat 網站上公開顯示等。這裡我們先聚焦底下的欄位:
- GTD 代表排行榜要記錄的資訊 (e.g. 分數)
- Achievement 就是成就,可以選擇要不要與 GTD 連動
- Access Token 呼叫 API 的金鑰
填入遊戲名稱並送出之後,有時候會跑出如下圖的錯誤
似乎是他們 API 沒寫好沒印出錯誤訊息,但我猜測是遊戲名稱被別人使用或不被接受 (例如我取名叫 test
就會出問題),可以嘗試回到上一頁更換遊戲名字。
設定 GTD
點集 Add GTD 添加排行榜要記錄的資訊。這裡我們要設定幾個欄位
- Key 是我們待會在呼叫 API 時的欄位 ID,設定後就無法更改
- Name 是顯示在排行榜時的欄位名稱
- Short Name ? (最大 4 個字)
- Type 欄位類型
- Numeric 數字
- Time 時間
- Currency 貨幣 (顯示時會用
$X.XX
表示,要注意的是數值123
代表$1.23
)
- Sorting 排序
- Larger is better 數值越大越好
- Smaller is better 數值越小越好
設定好 GTD 之後應該會長這樣。 (拿上面提到的 ryrysnake 做範例)
使用 API 上傳資料
接下來我們要試著在我們的遊戲裡面呼叫 globalstat 的 API 了。先記錄下 Access Token 的 ID 與 Secret 兩項資訊。
官方提供的 API 在 https://github.com/globalstats-io/unity-library/blob/master/GlobalstatsIO.cs
把唯一一個腳本 GlobalstatsIO.cs
複製進 Unity 專案裡面。
接著寫一點點程式,在想要上傳成績的地方寫如以下的程式。
這裡我一樣拿 ryrysnake 的原始碼出來見客:
// Globalstats Access Token |
就是這麼簡單。
獲取排行榜
GlobalstatsIO gs = new GlobalstatsIO(GlobalstatsIOApiId, GlobalstatsIOApiSecret); |